package com.xiaoshuidi.cloud.module.contract.dal.dataobject.roommeta;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaoshuidi.cloud.framework.mybatis.core.dataobject.BaseDO;
import com.xiaoshuidi.cloud.framework.tenant.core.db.TenantBaseDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;

/**
 * 合同同住人数据 DO
 *
 * @author test123
 */
@TableName(value = "contract_roommate", autoResultMap = true)
@KeySequence("contract_roommate_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ContractRoommateDO extends TenantBaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;
    /**
     * 关联业主合同
     */
    private Long houseContractId;
    /**
     * 关联租客合同
     */
    private Long roomContractId;
    /**
     * 房间id
     */
    private Long roomId;
    /**
     * 租客名
     */
    private String roommateName;
    /**
     * 租客手机号
     */
    private String roommatePhone;
    /**
     * 证件类型('', ''),
     */
    private String roommateIdType;
    /**
     * 证件号码
     */
    private String roommateIdNumber;
    /**
     * 备注
     */
    private String roommateComment;
    /**
     * 性别
     */
    private Integer roommateGender;
    /**
     * 年龄
     */
    private Integer roommateAge;
    /**
     * 学历
     */
    private String roommateEducation;
    /**
     * 职业
     */
    private String roommatePosition;

    /**
     * 国籍
     */
    private String nationality;
    /**
     * 关系
     */
    private String relation;
    /**
     * 退房时间
     */
    private LocalDate checkoutTime;
    /**
     * 退房操作人
     */
    private Long checkoutOperator;
    /**
     * 操作人id
     */
    private Long operator;
    /**
     * 0-同住人 1-主住人
     */
    private Integer roommateType;
    /**
     * 状态
     */
    private String status;

    /**
     * 证件附件地址
     */
    @Schema(description = "证件附件地址")
    private String certificateUrl;

    /**
     * 租客memberId
     */
    private Long memberId;

    /**
     * 合同客户类型 personal 个人 | company 企业
     */
    private String contractCustomerType;
    /**
     * 签署安全协议
     */
    private Boolean signSecurityProtocol;
    /**
     * 安全协议合同号
     */
    private String protocolContractId;
    /**
     * 安全协议乙方签约交易号
     */
    private String protocolTransactionNo;
    /**
     * 安全协议预览url
     */
    private String protocolViewUrl;

    /**
     * 安全协议下载url
     */
    private String protocolDownloadUrl;

    @TableField(exist = false)
    private Long customerCompanyId;
    @TableField(exist = false)
    private String customerCompanyName;
    @TableField(exist = false)
    private Long apartmentId;
    @TableField(exist = false)
    private String apartmentName;
    @TableField(exist = false)
    private String startTime;
    @TableField(exist = false)
    private String roomName;

}
